home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 24 / AACD 24.iso / AACD / Information / WebSites / Eyetech / DOWNLOAD / PORTP023.LHA / HyperIO-Install-289 / Install_HyperIO < prev    next >
Text File  |  1999-06-18  |  53KB  |  1,656 lines

  1. ;***************************************************************************************************
  2. ;***************************************************************************************************
  3. ;***
  4. ;***    hyperIO installation script
  5. ;***    ===========================
  6. ;***
  7. ;***    $VER: 1.1 (11.06.99)
  8. ;***
  9. ;***    ©1998-99 by Carsten 'michelangelo' Scholling
  10. ;***
  11. ;***
  12. ;***
  13. ;***    No changes outside of strings- and main-part!
  14. ;***
  15. ;***
  16. ;***************************************************************************************************
  17. ;***************************************************************************************************
  18.  
  19.  
  20. ;***************************************************************************************************
  21. ;***    Debugging stuff
  22. ;***************************************************************************************************
  23.  
  24.  
  25. ;***************************************************************************************************
  26. ;***    Error handling stuff
  27. ;***************************************************************************************************
  28. (onerror (P_Cleanup))
  29.  
  30.  
  31. ;***************************************************************************************************
  32. ;***    Configuration defaults
  33. ;***************************************************************************************************
  34. (set #prgname        "hyperIO")                    ;*** Simply the program name.
  35. (set #dirname        "hyperIO")                    ;*** Directory name to be created at first install.
  36.  
  37. (set #devspat        "hyper#?.device")            ;*** Devs hyperCOM/PAR file pattern
  38. (set #libspat        "vmcresource.library")            ;*** Libs VMC file pattern
  39. (set #devsisdnpat    "vmcisdn#?.device")            ;*** If this is found, some components should not be deleted!
  40.  
  41. (set #instarc        "hyperio.lha")                ;*** Installation archive name.
  42. (set #lhexname        "lhex")                        ;*** Unarchiver name
  43. (set #lhexopts        "-q -f -w=")                ;*** lhex options
  44. (set #lhexcmd        "x")                        ;*** lhex parameters
  45. (set #tempdir        "ram:")                        ;*** Temporary directory for unarchiving
  46. (set #tempinstdir    "VMC-hyperIO-Install")        ;*** Directory which holds installation files after extraction
  47.  
  48. (set #destdevs        "Devs:")                    ;*** Default device installation path. Primary needed for update check.
  49. (set #destlibs        "Libs:")                    ;*** Default libs installation path. Primary needed for update check.
  50. (set #destdocs        "Sys:Utilities")            ;*** Default documentation installation path.
  51. (set #destdocsdir    "hyperIO")                    ;*** Default utils directory.
  52. (set #destutil        "Sys:Utilities")            ;*** Default utils installation path.
  53. (set #destutildir    "hyperIO")                    ;*** Default utils directory.
  54. (set #destback        "SYS:Storage")                ;*** Default backup path.
  55. (set #destbackdir    "hyperIO_backup")            ;*** Default backup directory.
  56.  
  57. (set #minosver        36)                            ;*** Minimum OS version
  58. (set #mincpu        0)                            ;*** Minimum CPU.
  59.  
  60. (set #instchoice    0)                            ;*** Global installation choice (new, back, update, deinstall, end)
  61. (set #instparts        15)                            ;*** Bit mask of parts to install (0 = devs, 1 = libs, 2 = docs, 3 = utils)
  62. (set #instcards        191)                        ;*** Bit mask of cards to install drivers for (0 = hc1, 1 = hc3, 2 = hc3z, 3 = hc4, 4 = hc3ihc4, 5 = hc3ihc3z, 6 = hc3pcw, 7 = hp)
  63. (set #instutil        63)                            ;*** Bit mask of utilities to install (0 = ncomm, 1 = ncomm-pk, 2 = hydra, 3 = porth. 4 = prtman, 5 = auxh.)
  64.  
  65. (set #vmchc1        "hyperCOM1.device")            ;***
  66. (set #vmchc3        "hyperCOM3.device")            ;***
  67. (set #vmchc4        "hyperCOM4?.device")        ;***
  68. (set #vmchc3z        "hyperCOM3?Z.device")        ;***
  69. (set #vmchp            "hyperPAR.device")            ;***
  70. (set #vmcrsc        "vmcresource.library")        ;***
  71.  
  72. (set #utilncomm        "ncomm306")                    ;***
  73. (set #utilncommpk    "NComm306PubKey")            ;***
  74. (set #utilhydra        "hydra")                    ;***
  75. (set #utilporth        "porthandler")                ;***
  76. (set #utilprtman    "prtman39")                    ;***
  77. (set #utilauxh        "auxhandler")                ;***
  78.  
  79.  
  80. ;***************************************************************************************************
  81. ;***    Strings
  82. ;***************************************************************************************************
  83.  
  84. ;***
  85. ;*** German strings
  86. ;***
  87. (if (= @language "deutsch") (
  88.  
  89.     (set #wronginstaller    (cat    "Achtung! Es ist eine alte Version des Programmes 'Installer' auf "
  90.                                     "Ihrem Amiga!\n\nDie Installation benötigt mindestens Installer "
  91.                                     "43.3.\n\nBitte überprüfen Sie Ihre Konfiguration!"))
  92.  
  93.     (set #msgmakedir                "Folgendes Verzeichnis wird nun erstellt: ")
  94.  
  95.     (set #msgdelete                    "\nFolgende Datei wird jetzt gelöscht:\n\n")
  96.  
  97.     (set #msgcopy                    "\nFolgende Datei wird jetzt kopiert:\n\n")
  98.  
  99.     (set #msgcopyover1        (cat    "\nEs wurde in der Quelldatei keine Versionsangabe gefunden.\nSoll diese Datei kopiert werden?\n\n"
  100.                                     "Zu installierende Datei: "))
  101.     (set #msgcopyover2                "\nBisher installierte Datei: ")
  102.     (set #msgcopyovernofile            "Bisher ist keine Datei installiert.")
  103.  
  104.     (set #msgwelcome1        (cat    "\nWillkommen zur \n\n" #prgname))
  105.     (set #msgwelcome2                " Installation.\n\n")
  106.  
  107.     (set #msgcopyright        (cat    "Copyright ©1992-1999 by VMC Harald Frank\n"
  108.                                     "<vmc@vmc.de>\n"
  109.                                     "http://www.vmc.de\n\n"
  110.                                     "Installer script ©1998-99 by Carsten 'michelangelo' Scholling\n"
  111.                                     "<cscholling@vmc.de>\n"
  112.                                     "http://www.vmc.de/cscholling/\n\n"))
  113.  
  114.     (set #msgoldinst        (cat    "Ich habe eine alte " #prgname " Installation auf Ihrem System gefunden.\n"
  115.                                     "Bitte wählen Sie, wie die Installation fortgesetzt werden soll.\n"))
  116.  
  117.     (set #msgoldfilesexp    (cat    "\n\n\nEs werden nun einige alte Dateien aus dem System entfernt.\n"
  118.                                     "Sie können im folgenden das Löschen jeder Datei einzeln bestätigen.\n"))
  119.  
  120.     (set #msgoldfilesave            "\n\n\nEs werden nun einige alte Dateien aus dem System entfernt.\n")
  121.  
  122.     (set #msgoldfiles2                "Bitte deselektieren Sie die Dateien/Verzeichnisse\ndie nicht gelöscht werden sollen:\n")
  123.  
  124.     (set #msgoldinstupdate            "Update der alten Version")
  125.     (set #msgoldinstnew                "Komplette Neuinstallation")
  126.     (set #msgoldinstback            "Backup anlegen, anschließend neu installieren")
  127.     (set #msgoldinstdeinst            "Alte Version deinstallieren")
  128.     (set #msgoldinstend                "Programm beenden")
  129.  
  130.     (set #msgwhichparts        (cat    "\nWelche Komponenten sollen installiert werden?\nAlle nicht selektierten Komponenten werden,\n"
  131.                                     "sofern vorhanden, automatisch deinstalliert!\n"))
  132.     (set #msgwhichdevs                "Devices")
  133.     (set #msgwhichlibs                "Libraries")
  134.     (set #msgwhichdocs                "Dokumentation")
  135.     (set #msgwhichutil                "Goodies")
  136.  
  137.     (set #msgworkingbackup            "\nErstelle ein Backup der alten Installation...\n")
  138.     (set #msgworkingsearchold        "\nSuche nach bereits installierten Komponenten... ;-)\n")
  139.     (set #msgworkingprepareinst        "\nBereite die Installation vor...\n")
  140.     (set #msgworkingpreparedeinst    "\nBereite die Deinstallation vor...\n")
  141.     (set #msgworkinginst            "\nArbeite an der Installation...\n")
  142.     (set #msgworkingdeinst            "\nArbeite an der Deinstallation...\n")
  143.     (set #msgworkingcleanup            "\nTemporäre Dateien werden entfernt...\n")
  144.  
  145.     (set #msguptodate        (cat    "Die zu installierende " #prgname " Version ist auf dem neusten Stand.\n"
  146.                                     "Bitte wählen Sie, ob Sie eine Neu- oder Deinstallation wünschen, oder\n"
  147.                                     "ob der Installer beendet werden soll.\n"))
  148.  
  149.     (set #msgaskdevs        (cat    "In welchem Verzeichnis sollen die Device-Treiber installiert werden?\n"
  150.                                     "Es wird KEIN Verzeichnis erstellt!\n"))
  151.     (set #msgasklibs        (cat    "In welchem Verzeichnis sollen die Bibliotheken installiert werden?\n"
  152.                                     "Es wird KEIN Verzeichnis erstellt!\n"))
  153.     (set #msgaskdocs        (cat    "In welchem Verzeichnis soll die Dokumentation installiert werden?\n"
  154.                                     "Es wird ein Verzeichnis " #destdocsdir " erstellt!\n"))
  155.     (set #msgaskutil        (cat    "In welchem Verzeichnis sollen die Goodies installiert werden?\n"
  156.                                     "Es wird ein Verzeichnis " #destutildir " erstellt!\n"))
  157.     (set #msgaskback        (cat    "In welchem Verzeichnis soll das Backup angelegt werden?\n"
  158.                                     "Es wird ein Verzeichnis " #destbackdir " erstellt!\n"))
  159.  
  160.     (set #msgconfirm        (cat    "\nDie folgenden Daten werden zur Installation herangezogen:\n"))
  161.     (set #msgconfirmdeinst    (cat    "\nDie folgenden Daten werden zur Deinstallation herangezogen:\n"))
  162.     (set #msgconfirmcpu                "\nProzessor: ")
  163.     (set #msgconfirmfpu                "\nFPU: ")
  164.     (set #msgconfirmos                "\nBetriebssystem: ")
  165.     (set #msgconfirmdevsdest        "\nDevices: ")
  166.     (set #msgconfirmlibsdest        "\nLibraries: ")
  167.     (set #msgconfirmdocsdest        "\nDokumentation: ")
  168.     (set #msgconfirmutildest        "\nGoodies: ")
  169.     (set #msgconfirmbackdest        "\nBackup: ")
  170.     (set #msgconfirmask                "\n\nSoll ich mit diesen Einstellungen fortfahren?\n")
  171.  
  172.     (set #msgdelrsclib        (cat    "\nAuf Ihrem System wurde eine VMC-ISDN Installation\n"
  173.                                     "gefunden welche auch die " #vmcrsc " benötigt.\n"
  174.                                     "Soll sie trotzdem gelöscht werden?\n"))
  175.  
  176.     (set #msgcardinst                "Bitte wählen Sie aus, welche Karten in\nIhrem System installiert sind.\n(Hilfe beachten!)")
  177.     (set #msgvmchc1d                "HyperCOM 1 Karte")
  178.     (set #msgvmchc3d                "HyperCOM 3/3+ Karte auf Uhrenport")
  179.     (set #msgvmchc3z                "HhyperCOM 3z/3+ Zorro Karte")
  180.     (set #msgvmchc4d                "HyperCOM 4/4+ Zorro Karte")
  181.     (set #msgvmchc3ihc4d            "HyperCOM3i installiert auf HyperCOM 4")
  182.     (set #msgvmchc3ihc3zd            "HyperCOM3i installiert auf HyperCOM 3z")
  183.     (set #msgvmchc3pcw                "HyperCOM3+ installiert auf Buddha/CatWeazel")
  184.     (set #msgvmchpd                    "hyperPAR.device für alle Karten")
  185.  
  186.     (set #msgcardinsthelp    (cat    "!!! NEU !!!\n\n"
  187.                                     "Eine hyperCOM3i welche auf einer hyperCOM4 montiert ist wird über das "
  188.                                     "hyperCOM4X.device auf Unit 4 und Unit 5 angesprochen.\n\n"
  189.                                     "Eine hyperCOM3i welche auf einer hyperCOM3z montiert ist wird über das "
  190.                                     "hyperCOM3Xz.device auf Unit 2 und Unit 3 angesprochen.\n\n"
  191.                                     "Alle parallelen Schnittstellen auf den hyperCOM-Karten werden grundsätzlich "
  192.                                     "über das hyperPAR.device angesteuert.\n\nDie LPT-Schnittstelle einer hyperCOM3 "
  193.                                     "im A1200 liegt immer auf Unit 0.\n"))
  194.  
  195.     (set #msgutilinst                "Bitte wählen Sie aus, welche der Goodie-Archive Sie kopieren möchten")
  196.     (set #msgutilncommd                "NComm V3.06 - Terminalprogramm")
  197.     (set #msgutilncommpkd            "Freies Keyfile für NComm")
  198.     (set #msgutilhydrad                "Hydra V1.0r9 - Bidirektionales Transferprotokoll")
  199.     (set #msgutilporthd                "PortHandler V41 - Ersatz für original PortHandler")
  200.     (set #msgutilprtmand            "PrintManager V39 - Drucker Spooler")
  201.     (set #msgutilauxhd                "Aux-Handler V2 - Ermöglicht Remote-Login")
  202.  
  203.     (set #msgutilinsthelp    (cat    "Achtung!\n\n"
  204.                                     "Die beigelegten Archive werden NICHT installiert sondern nur in das gewählte "
  205.                                     "Zielverzeichnis kopiert. Mit anderen Worten: Selbst ist die Frau/der Mann. "))
  206.  
  207.     (set #msgendinst        (cat    "\n" #prgname " Installation beendet!\n\n"))
  208.     (set #msgenddeinst        (cat    "\n" #prgname " Deinstallation beendet!\n\n"))
  209.     (set #msgend2            (cat    "\n" #prgname " Programm durch Benutzer beendet!\n\n"))
  210.  
  211.     (set #msgshowreadme                "\nSoll jetzt die Datei LiesMichZuerst.guide angezeigt werden?\n")
  212.  
  213.     (set #msgreboot                    "\nDer Rechner MUß nach dieser Installation neu gestartet\nwerden. Soll das jetzt geschehen?\n")
  214.     (set #msgrebootyes                "Reboot")
  215.     (set #msgrebootno                "KEIN Reboot")
  216. )
  217.  
  218. ;***
  219. ;*** English strings
  220. ;***
  221. (
  222.     (set #wronginstaller    (cat    "Attention! I've found an old version of the programm 'Installer' on "
  223.                                     "your Amiga!\n\nThe installation needs at least Installer version "
  224.                                     "43.3.\n\nPlease check your configuration!"))
  225.  
  226.     (set #msgmakedir                "The following directory will be created now: ")
  227.  
  228.     (set #msgdelete                    "\nThe following file will be deleted now:\n\n")
  229.  
  230.     (set #msgcopy                    "\nThe following file will be copied now:\n\n")
  231.  
  232.     (set #msgcopyover1        (cat    "\nI've found no version information in the source file.\nShould i copy this file?\n\n"
  233.                                     "Sourcefile:     "))
  234.     (set #msgcopyover2                "\nDestination file: ")
  235.     (set #msgcopyovernofile            "No file installed now.")
  236.  
  237.     (set #msgwelcome1        (cat    "\nWelcome to the\n\n" #prgname))
  238.     (set #msgwelcome2                " installation.\n\n")
  239.  
  240.     (set #msgcopyright        (cat    "Copyright ©1992-1999 by VMC Harald Frank\n"
  241.                                     "<vmc@vmc.de>\n"
  242.                                     "http://www.vmc.de\n\n"
  243.                                     "Installer script ©1998-99 by Carsten 'michelangelo' Scholling\n"
  244.                                     "<cscholling@vmc.de>\n"
  245.                                     "http://www.vmc.de/cscholling/\n\n"))
  246.  
  247.     (set #msgoldinst        (cat    "I have found an old " #prgname " installation on your system.\n"
  248.                                     "Please choose, how to continue the installation.\n"))
  249.  
  250.     (set #msgoldfilesexp    (cat    "\n\n\nI am now deleting some old files from your system.\n"
  251.                                     "You can confirm the action for each file and directory.\n"))
  252.  
  253.     (set #msgoldfilesave            "\n\n\nI am now deleting some old files from your system.\n")
  254.  
  255.     (set #msgoldfiles2                "Please deselect all files/dirs,\nthat should not to be deleted:\n")
  256.  
  257.     (set #msgoldinstupdate            "Update old version")
  258.     (set #msgoldinstnew                "Complete new installation")
  259.     (set #msgoldinstback            "Backup and install new")
  260.     (set #msgoldinstdeinst            "Remove installation")
  261.     (set #msgoldinstend                "Abort installation")
  262.  
  263.     (set #msgwhichparts        (cat    "\nWhich components should be installed?\nAll unselected components will be \n"
  264.                                     "automatically deinstalled!\n"))
  265.     (set #msgwhichdevs                "Devices")
  266.     (set #msgwhichlibs                "Libraries")
  267.     (set #msgwhichdocs                "Documentation")
  268.     (set #msgwhichutil                "Goodies")
  269.  
  270.     (set #msgworkingbackup            "\nCreate backup of the old installation...\n")
  271.     (set #msgworkingsearchold        "\nSearching for installed components... ;-)\n")
  272.     (set #msgworkingprepareinst        "\nPreparing installation...\n")
  273.     (set #msgworkingpreparedeinst    "\nPreparing deinstallation...\n")
  274.     (set #msgworkinginst            "\nWorking on installation...\n")
  275.     (set #msgworkingdeinst            "\nWorking on deinstallation...\n")
  276.  
  277.     (set #msguptodate        (cat    "The installed version of " #prgname " is up to date.\n"
  278.                                     "Please choose if you want a complete new installation, \n"
  279.                                     "deinstallation or quitting.\n"))
  280.  
  281.     (set #msgaskdevs        (cat    "Where should i install the devices?\n"
  282.                                     "No directory will be created!\n"))
  283.     (set #msgasklibs        (cat    "Where should i install the librarys?\n"
  284.                                     "No directory will be created!\n"))
  285.     (set #msgaskdocs        (cat    "Where should i install the doc files?\n"
  286.                                     "The " #destdocsdir " directory will be created!\n"))
  287.     (set #msgaskutil        (cat    "Where should i copy the goodies?\n"
  288.                                     "The " #destutildir " directory will be created!\n"))
  289.     (set #msgaskback        (cat    "Where should i copy the backup files?\n"
  290.                                     "The " #destbackdir " directory will be created!\n"))
  291.  
  292.     (set #msgconfirm        (cat    "\nThe following information will be used for installation:\n"))
  293.     (set #msgconfirmdeinst    (cat    "\nThe following information will be used for deinstallation:\n"))
  294.     (set #msgconfirmcpu                "\nCPU: ")
  295.     (set #msgconfirmfpu                "\nFPU: ")
  296.     (set #msgconfirmos                "\nOS type: ")
  297.     (set #msgconfirmdevsdest        "\nDevices: ")
  298.     (set #msgconfirmlibsdest        "\nLibraries: ")
  299.     (set #msgconfirmdocsdest        "\nDocumentation: ")
  300.     (set #msgconfirmutildest        "\nGoodies: ")
  301.     (set #msgconfirmbackdest        "\nBackup: ")
  302.     (set #msgconfirmask                "\n\nShould i use this settings?\n")
  303.  
  304.     (set #msgdelrsclib        (cat    "\nA VMC-ISDN installation which also uses the " #vmcrsc
  305.                                     "was found on your system.\n"
  306.                                     "Should i delete it?\n"))
  307.  
  308.     (set #msgcardinst                "Please choose the cards, that are installed in your Amiga.\n(See Help!)")
  309.     (set #msgvmchc1d                "HyperCOM 1/PortJnr card")
  310.     (set #msgvmchc3d                "HyperCOM 3/3+/PortPlus card")
  311.     (set #msgvmchc3z                "HyperCOM 3z/3+ Zorro card")
  312.     (set #msgvmchc4d                "HyperCOM 4/4+ Zorro card")
  313.     (set #msgvmchc3ihc4d            "HyperCOM3i plugin on HyperCOM 4")
  314.     (set #msgvmchc3ihc3zd            "HyperCOM3i plugin on HyperCOM 3z")
  315.     (set #msgvmchc3pcw                "HyperCOM3+ installed on Buddha/CatWeazel")
  316.     (set #msgvmchpd                    "hyperPAR.device for all HyperCOM's")
  317.  
  318.     (set #msgcardinsthelp    (cat    "!!! NEW !!!\n\n"
  319.                                     "A hyperCOM3i which is installed on a hyperCOM4 card will be used with "
  320.                                     "hyperCOM4X.device on units 4 and 5.\n\n"
  321.                                     "A hyperCOM3i which is installed on a hyperCOM3z card will be used with "
  322.                                     "hyperCOM3Xz.device on units 2 and 3.\n\n"
  323.                                     "All parallel interfaces on hyperCOM cards will be used through hyperPAR.device.\n\n"
  324.                                     "The LPT-interface on a hyperCOM3 in A1200 is allways unit 0.\n"))
  325.  
  326.     (set #msgutilinst                "Please choose which parts of the goodies you want to copy")
  327.     (set #msgutilncommd                "NComm V3.06 - Terminalsoftware")
  328.     (set #msgutilncommpkd            "Free & Public Keyfile for NComm")
  329.     (set #msgutilhydrad                "Hydra V1.0r9 - Bidirectional transfer protokoll")
  330.     (set #msgutilporthd                "PortHandler V41 - Replacement for the old one")
  331.     (set #msgutilprtmand            "PrintManager V39 - Printer spooler")
  332.     (set #msgutilauxhd                "Aux-Handler V2 - Shell over serial remote-login")
  333.  
  334.     (set #msgutilinsthelp    (cat    "Attention!\n\n"
  335.                                     "The included goodies will NOT be installed, but only copied "
  336.                                     "to the selected destination dir. Goodie-installation is -> do it yourself. "))
  337.  
  338.     (set #msgendinst        (cat    "\n" #prgname " Installation done!\n\n"))
  339.     (set #msgenddeinst        (cat    "\n" #prgname " Deinstallation done!\n\n"))
  340.     (set #msgend2            (cat    "\n" #prgname " Installation aborted by user!\n\n"))
  341.  
  342.     (set #msgshowreadme                "\nDo you want to read the ReadMeFirst.guide now?\n")
  343.  
  344.     (set #msgreboot                    "\nYou MUST reboot after this installation to use\nthe new drivers. Should i reboot now?\n")
  345.     (set #msgrebootyes                "Reboot")
  346.     (set #msgrebootno                "NO reboot")
  347. ))
  348.  
  349.  
  350.  
  351. ;***************************************************************************************************
  352. ;***************************************************************************************************
  353. ;***
  354. ;***    !!! NO CHANGES BEHIND THIS LINE !!!
  355. ;***
  356. ;***************************************************************************************************
  357. ;***************************************************************************************************
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364. ;***************************************************************************************************
  365. ;***************************************************************************************************
  366. ;***
  367. ;***    Standard procedures
  368. ;***
  369. ;***************************************************************************************************
  370. ;***************************************************************************************************
  371.  
  372. ;***************************************************************************************************
  373. ;***    Procedure CheckOS
  374. ;***************************************************************************************************
  375. (procedure P_CheckOS
  376.     (set os    (/ (getversion "libs:version.library") 65536))
  377.  
  378.     (if (= os 37)    (set osname "2.0"))
  379.     (if (= os 38)    (set osname "2.1"))
  380.     (if (= os 39)    (set osname "3.0"))
  381.     (if (= os 40)    (set osname "3.1"))
  382.     (if (= os 41)    (set osname "3.5"))
  383.     (if (> os 41)    (set osname "3.5+ (not known)"))
  384.  
  385.     (if (>= os minosver)
  386.         (set ret 1)
  387.         (set ret 0)
  388.     )
  389. )
  390.  
  391.  
  392. ;***************************************************************************************************
  393. ;***    Procedure CheckCPU
  394. ;***************************************************************************************************
  395. (procedure P_CheckCPU
  396.     (set cpuname    (database "cpu"))
  397.     (set fpuname    (database "fpu"))
  398.  
  399.     (if (= cpuname "68000")    (set cpu 0))
  400.     (if (= cpuname "68010")    (set cpu 1))
  401.     (if (= cpuname "68020")    (set cpu 2))
  402.     (if (= cpuname "68030")    (set cpu 3))
  403.     (if (= cpuname "68040")    ((set cpu 4) (set fpuname "FPU040")))
  404.     (if (> (exists ("sys:libs/68060.library")) 0) (
  405.         (set cpuname "68060")
  406.         (set cpu 6)
  407.     ))
  408.  
  409.     (if (= fpuname "NOFPU")        (set fpu 0))
  410.     (if (= fpuname "68881")        (set fpu 1))
  411.     (if (= fpuname "68882")        (set fpu 2))
  412.     (if (= fpuname "FPU40")        (set fpu 4))
  413.     (if (= fpuname "FPU040")    (set fpu 4))
  414.     (if (> (exists ("sys:libs/68060.library")) 0) (
  415.         (set fpuname "FPU060")
  416.     ))
  417.  
  418.     (if (>= cpu mincpu)
  419.         (set ret 1)
  420.         (set ret 0)
  421.     )
  422. )
  423.  
  424.  
  425. ;***************************************************************************************************
  426. ;***    Procedure GetVersion <file>
  427. ;***************************************************************************************************
  428. (procedure P_GetVersion p_file
  429.     (set ver    (shiftright (BITAND (getversion p_file) $ffff0000) 16))
  430. )
  431.  
  432.  
  433. ;***************************************************************************************************
  434. ;***    Procedure GetRevision <file>
  435. ;***************************************************************************************************
  436. (procedure P_GetRevision p_file
  437.     (set rev    (BITAND (getversion p_file) $ffff))
  438. )
  439.  
  440.  
  441. ;***************************************************************************************************
  442. ;***    Procedure GetFullVersion <file>
  443. ;***************************************************************************************************
  444. (procedure P_GetFullVersion p_file
  445.     (set vers    (cat (P_GetVersion p_file ) "." (P_GetRevision p_file )))
  446. )
  447.  
  448.  
  449. ;***************************************************************************************************
  450. ;***    Procedure CheckExists <file>
  451. ;***************************************************************************************************
  452. (procedure P_CheckExists p_file
  453.     (set ret (exists p_file (noreq)))
  454. )
  455.  
  456.  
  457. ;***************************************************************************************************
  458. ;***    Procedure CheckExistsPat <path> <pattern>
  459. ;***************************************************************************************************
  460. (procedure P_CheckExistsPat p_path p_pat
  461.  
  462.     (set patexists 0)
  463.  
  464.     (if (P_CheckExists p_path) (
  465.  
  466.         (run (cat "list >t:csinstcheckpat.temp " p_path " pat " p_pat " lformat \"%n\""))
  467.  
  468.         (if (> (getsize "t:csinstcheckpat.temp") 0) (set patexists 1))
  469.  
  470.         (delete "t:csinstcheckpat.temp")
  471.     ))
  472.  
  473.     (set patexists patexists)
  474. )
  475.  
  476.  
  477. ;***************************************************************************************************
  478. ;***    Procedure Rename <file> <newname>
  479. ;***************************************************************************************************
  480. (procedure P_Rename p_file p_new p_conf
  481.     (if (= 2 @user-level)
  482.         (rename p_file p_new
  483.             (confirm)
  484.             (prompt (cat #msgrename1 p_file #msgrename2 p_new))
  485.             (help (cat #msgrename1 p_file #msgrename2 p_new))
  486.         )
  487.  
  488.         (rename p_file p_new)
  489.     )
  490. )
  491.  
  492.  
  493. ;***************************************************************************************************
  494. ;***    Procedure MakeDir <path> <name> <NOICONS>
  495. ;***************************************************************************************************
  496. (procedure P_MakeDir p_path p_name p_noicons
  497.  
  498.     (if (OR (> (P_CheckExists p_path) 0) (= p_name "")) (
  499.  
  500.         (set full (tackon p_path p_name))
  501.  
  502.         (if (< (P_CheckExists full) 2) (
  503.  
  504.             (if (= 2 @user-level)
  505.                 (if (= p_noicons "noicons")
  506.                     (makedir full
  507.                         (prompt (cat #msgmakedir full))
  508.                         (help (cat #msgmakedir full "\n\n" @makedir-help))
  509.                         (confirm)
  510.                     )
  511.                     (makedir full
  512.                         (prompt (cat #msgmakedir full))
  513.                         (help (cat #msgmakedir full "\n\n" @makedir-help))
  514.                         (confirm)
  515.                         (infos)
  516.                     )
  517.                 )
  518.                 (if (= p_noicons "icons")
  519.                     (makedir full
  520.                         (prompt (cat #msgmakedir full))
  521.                         (help (cat #msgmakedir full "\n\n" @makedir-help))
  522.                     )
  523.                     (makedir full
  524.                         (prompt (cat #msgmakedir full))
  525.                         (help (cat #msgmakedir full "\n\n" @makedir-help))
  526.                         (infos)
  527.                     )
  528.                 )
  529.             )
  530.         ))
  531.     ))
  532. )
  533.  
  534.  
  535. ;***************************************************************************************************
  536. ;***    Procedure Delete <file> <NOICONS> <NOREQ>
  537. ;***************************************************************************************************
  538. (procedure P_Delete p_file p_noicons p_noreq
  539.  
  540.     (if (= p_noreq "noreq") (
  541.  
  542.         (if (= p_noicons "noicons")
  543.             (delete p_file
  544.                 (prompt (cat #msgdelete p_file))
  545.                 (help (cat #msgdelete p_file))
  546.                 (optional "force" "askuser")
  547.                 (all)
  548.             )
  549.             (delete p_file
  550.                 (prompt (cat #msgdelete p_file))
  551.                 (help (cat #msgdelete p_file))
  552.                 (optional "force" "askuser")
  553.                 (all)
  554.             )
  555.         )
  556.     )
  557.     (
  558.         (if (= p_noicons "noicons")
  559.             (delete p_file
  560.                 (prompt (cat #msgdelete p_file))
  561.                 (help (cat #msgdelete p_file))
  562.                 (optional "force" "askuser")
  563.                 (confirm)
  564.                 (all)
  565.             )
  566.             (delete p_file
  567.                 (prompt (cat #msgdelete p_file))
  568.                 (help (cat #msgdelete p_file))
  569.                 (optional "force" "askuser")
  570.                 (confirm)
  571.                 (infos)
  572.                 (all)
  573.             )
  574.         )
  575.     ))
  576. )
  577.  
  578.  
  579. ;***************************************************************************************************
  580. ;***    Procedure SelectDir <default dest> <text> <helptext>
  581. ;***************************************************************************************************
  582. (procedure P_SelectDir p_dest p_text p_help
  583.  
  584.     ;*** Ask the user for any directory.
  585.     ;***
  586.     (set p_dest
  587.         (askdir
  588.             (prompt        p_text)
  589.             (help        (cat p_help "\n\n" @askdir-help))
  590.             (default    p_dest)
  591.         )
  592.     )
  593.  
  594.     (set p_dest p_dest)
  595. )
  596.  
  597.  
  598. ;***************************************************************************************************
  599. ;***    Procedure CopyNewer <source dir> <pattern> <dest dir>
  600. ;***************************************************************************************************
  601. (procedure P_CopyNewer p_srcdir p_pat p_destdir
  602.  
  603.     ;*** Compare the version/size
  604.     ;***
  605.     (foreach p_srcdir p_pat (
  606.  
  607.         (set res 1)
  608.  
  609.         ;*** Recursively call.
  610.         ;***
  611.         (if (= 2 (P_CheckExists (tackon p_srcdir @each-name)))
  612.         (
  613.             (P_MakeDir p_destdir @each-name "icons")
  614.  
  615.             (set savesrc    p_srcdir)
  616.             (set savepat    p_pat)
  617.             (set savedest    p_destdir)
  618.  
  619.             (P_CopyNewer (tackon p_srcdir @each-name) p_pat (tackon p_destdir @each-name))
  620.  
  621.             (set p_srcdir    savesrc)
  622.             (set p_pat        savepat)
  623.             (set p_destdir    savedest)
  624.         )
  625.         (
  626.             ;*** Get the two version numbers.
  627.             ;***
  628.             (if (= 0 (getversion (tackon p_srcdir @each-name)))
  629.             (
  630.                 (set srcvers (cat "  (" (/ (getsize (tackon p_srcdir @each-name)) 1024) "kB)"))
  631.  
  632.                 (if ((P_CheckExists (tackon p_destdir @each-name)))
  633.                 (
  634.                     (set destname @each-name)
  635.                     (set msgcopyover2 #msgcopyover2)
  636.  
  637.                     (if (= 0 (getversion (tackon p_destdir @each-name)))
  638.                         (set destvers (cat "  (" (/ (getsize (tackon p_destdir @each-name)) 1024) "kB)"))
  639.                         (set destvers (cat (P_GetFullVersion (tackon p_destdir @each-name)) "  (" (/ (getsize (tackon p_destdir @each-name)) 1024) "kB)"))
  640.                     )
  641.                 )
  642.                 (
  643.                     (set destname #msgcopyovernofile)
  644.                     (set destvers "")
  645.                     (set msgcopyover2 "\n")
  646.                 ))
  647.  
  648.                 (set res (askbool
  649.                     (prompt        (cat #msgcopyover1 @each-name " " srcvers msgcopyover2 destname " " destvers))
  650.                     (help        (cat #msgcopyover1 @each-name " " srcvers msgcopyover2 destname " " destvers))
  651.                     (default    1)
  652.                 ))
  653.  
  654.                 (if (= 1 res) (
  655.                     (copyfiles
  656.                         (prompt #msgcopy)
  657.                         (help (cat #msgcopy @copyfiles-help))
  658.                         (source    p_srcdir)
  659.                         (dest    p_destdir)
  660.                         (pattern @each-name)
  661.                         (infos)
  662.                     )
  663.                 ))
  664.             )
  665.             (
  666.                 (if (= 2 @user-level)
  667.                     (copylib
  668.                         (prompt (cat #msgcopy @each-name))
  669.                         (help (cat #msgcopy @each-name "\n\n" @copylib-help))
  670.                         (source    (tackon p_srcdir @each-name))
  671.                         (dest     p_destdir)
  672.                         (confirm)
  673.                         (infos)
  674.                     )
  675.                     (copylib
  676.                         (prompt (cat #msgcopy @each-name))
  677.                         (help (cat #msgcopy @each-name "\n\n" @copylib-help))
  678.                         (source    (tackon p_srcdir @each-name))
  679.                         (dest     p_destdir)
  680.                         (infos)
  681.                     )
  682.                 )
  683.             ))
  684.         ))
  685.     ))
  686. )
  687.  
  688.  
  689. ;***************************************************************************************************
  690. ;***    Procedure CopyNewerExists
  691. ;***************************************************************************************************
  692. (procedure P_CopyNewerExists p_srcdir p_pat p_destdir
  693.  
  694.     (if (P_CheckExistsPat p_destdir p_pat) (P_CopyNewer p_srcdir p_pat p_destdir))
  695. )
  696.  
  697.  
  698.  
  699.  
  700. ;***************************************************************************************************
  701. ;***    Procedure PreInstall
  702. ;***************************************************************************************************
  703. (procedure P_PreInstall
  704.  
  705.     (set @default-dest (tackon #destdocs #destdocsdir))
  706. )
  707.  
  708.  
  709. ;***************************************************************************************************
  710. ;***    Procedure Welcome
  711. ;***************************************************************************************************
  712. (procedure P_About p_update
  713.  
  714. ;    (set date (getenv (tackon (pathonly @icon) "hyperIOVersion")))
  715. ;    (set ver            (/ vers 65536))
  716. ;    (set rev            (- vers (* ver 65536)))
  717. ;    (set version        (cat ver "." rev))
  718.  
  719. ;    (message (cat #msgwelcome1 " " version #msgwelcome2 #msgcopyright))
  720.     (message (cat #msgwelcome1 #msgwelcome2 #msgcopyright))
  721. )
  722.  
  723.  
  724. ;***************************************************************************************************
  725. ;***    Procedure CheckOldInst
  726. ;***************************************************************************************************
  727. (procedure P_CheckOldInst
  728.  
  729.     (set ret 1)
  730.  
  731.     (working #msgworkingsearchold)
  732.  
  733.     ;*** Check for a version file in devs:
  734.     ;***
  735.     (if (= 0 (P_CheckExists (tackon #destdevs "hyperIOVersion")))
  736.     (
  737.         (set patcnt 0)
  738.  
  739.         ;*** Search for devices and libs (resource lib does not bother if isdn installed)
  740.         ;***
  741.         (if (P_CheckExistsPat #destdevs #devspat) (set patcnt (+ 1 patcnt)))
  742.         (if (AND (P_CheckExistsPat #destlibs #libspat) (= 0 (P_CheckExistsPat #destdevs #devsisdnpat))) (set patcnt (+ 1 patcnt)))
  743.         (if (P_CheckExistsPat (tackon #destdocs #destdocsdir) "(Documentaion|Dokumentation)") (set patcnt (+ 1 patcnt)))
  744.         (if (P_CheckExistsPat (tackon #destutil #destutildir) "Goodies") (set patcnt (+ 1 patcnt)))
  745.  
  746.         ;*** Found some very old files
  747.         ;***
  748.         (if (> patcnt 0)
  749.         (
  750.             (set ret 2)
  751.  
  752.             ;*** Let the user select what to do (update, install new).
  753.             ;***
  754.             (set    #instchoice
  755.                 (askchoice
  756.                     (prompt        #msgoldinst)
  757.                     (help        (cat #msgoldinst "\n\n" @askchoice-help))
  758.                     (choices    #msgoldinstnew #msgoldinstback #msgoldinstdeinst #msgoldinstend)
  759.                     (default    0)
  760.                 )
  761.             )
  762.  
  763.             ;*** Add 1 to the choice (If very old, no update possible!)
  764.             ;***
  765.             (set #instchoice (+ 1 #instchoice))
  766.         )
  767.         (
  768.             ;*** No previous installation found! Install new.
  769.             ;***
  770.             (set #instchoice 1)
  771.             (set ret 3)
  772.         ))
  773.     )
  774.     (
  775.         ;*** Else, we look for the version number
  776.         ;*** coded as version=high-byte and revision=low-byte.
  777.         ;***
  778.         (set oldvers (getenv (tackon #destdevs "hyperIOVersion")))
  779.         (set newvers (getenv (tackon (pathonly @icon) "hyperIOVersion")))
  780.  
  781.         (if (< oldvers newvers) (
  782.  
  783.             ;*** Let the user select what to do (update, install new).
  784.             (set    #instchoice
  785.                 (askchoice
  786.                     (prompt        #msgoldinst)
  787.                     (help        (cat #msgoldinst "\n\n" @askchoice-help))
  788.                     (choices    #msgoldinstupdate #msgoldinstnew #msgoldinstback #msgoldinstdeinst #msgoldinstend)
  789.                     (default    0)
  790.                 }
  791.             ))
  792.         )
  793.         (
  794.             (set ret 1)
  795.  
  796.             ;*** All files up to date. May the user want to deinstall the files...
  797.             (set    choice
  798.                 (askchoice
  799.                     (prompt        #msguptodate)
  800.                     (help        (cat #msguptodate "\n\n" @askchoice-help))
  801.                     (choices    #msgoldinstnew #msgoldinstdeinst #msgoldinstend)
  802.                     (default    0)
  803.                 }
  804.             ))
  805.  
  806.             (if (= 0 choice)
  807.                 (set #instchoice 1)
  808.  
  809.                 (if (= 1 choice)
  810.                     (set #instchoice 3)
  811.  
  812.                     (if (= 2 choice)
  813.                         (set #instchoice 4)
  814.                     )
  815.                 )
  816.             )
  817.         ))
  818.     ))
  819.  
  820.     ;*** We have to cancel (end) the installation script
  821.     ;***
  822.     (if (= 4 #instchoice) (set ret 0))
  823.  
  824.     (set ret ret)
  825. )
  826.  
  827.  
  828. ;***************************************************************************************************
  829. ;***    Procedure PrepareInstall
  830. ;***************************************************************************************************
  831. (procedure P_PrepareInstall
  832.  
  833.     ;*** Only ask, if not deinstallation.
  834.     ;***
  835.     (if (<> 3 #instchoice) (
  836.  
  837.         ;*** Let the user select which parts of the software should be installed
  838.         ;***
  839.         (set #instparts
  840.             (askoptions
  841.                 (prompt        #msgwhichparts)
  842.                 (help        (cat #msgwhichparts "\n\n" @askchoice-help))
  843.                 (choices    #msgwhichdevs #msgwhichlibs #msgwhichdocs #msgwhichutil)
  844.                 (default    #instparts)
  845.             }
  846.         ))
  847.  
  848.         ;*** Let the user (ALL USERS) select which cards are installed.
  849.         ;***
  850.         (set tempuser @user-level)
  851.         (user 2)
  852.  
  853.         (if (IN #instparts 0)
  854.             (set    #instcards
  855.                 (askoptions
  856.                     (prompt        #msgcardinst)
  857.                     (help        (cat #msgcardinsthelp "\n\n" @askoptions-help))
  858.                     (choices    #msgvmchc1d #msgvmchc3d #msgvmchc3z #msgvmchc4d #msgvmchc3ihc4d #msgvmchc3ihc3zd #msgvmchc3pcw #msgvmchpd)
  859.                     (default    #instcards)
  860.                 )
  861.             )
  862.             (set #instcards 0)
  863.         )
  864.  
  865.         (user tempuser)
  866.  
  867.         ;*** Let the user select which utils should be installed (if NO update)
  868.         ;***
  869.         (if (<> 0 #instchoice) (
  870.             (if (IN #instparts 3)
  871.                 (set    #instutil
  872.                     (askoptions
  873.                         (prompt        #msgutilinst)
  874.                         (help        (cat #msgutilinsthelp "\n\n" @askoptions-help))
  875.                         (choices    #msgutilncommd #msgutilncommpkd #msgutilhydrad #msgutilporthd #msgutilprtmand #msgutilauxhd)
  876.                         (default    #instutil)
  877.                     )
  878.                 )
  879.                 (set #instutil 0)
  880.             )
  881.         ))
  882.  
  883.         ;*** Ask for the destination dirs depending on selected parts
  884.         ;***
  885.         (if (IN #instparts 0) (set #destdevs (P_SelectDir #destdevs #msgaskdevs #msgaskdevs)))
  886.         (if (IN #instparts 1) (set #destlibs (P_SelectDir #destlibs #msgasklibs #msgasklibs)))
  887.         (if (IN #instparts 2) (set #destdocs (P_SelectDir #destdocs #msgaskdocs #msgaskdocs)))
  888.         (if (IN #instparts 3) (set #destutil (P_SelectDir #destutil #msgaskutil #msgaskutil)))
  889.  
  890.         ;*** Let the user select a backup dir if backup selected
  891.         ;***
  892.         (if (= 2 #instchoice) (set #destback (P_SelectDir #destback #msgaskback #msgaskback)))
  893.     ))
  894. )
  895.  
  896.  
  897. ;***************************************************************************************************
  898. ;***    Procedure AskConfirmation
  899. ;***************************************************************************************************
  900. (procedure P_AskConfirmation
  901.  
  902.     (set msgconfirm2 "")
  903.  
  904.     (if (<> 3 #instchoice)
  905.     (
  906.         (set msgconfirm1    (cat    #msgconfirm
  907.                                     #msgconfirmcpu    cpuname
  908.                                     #msgconfirmfpu    fpuname
  909.                                     #msgconfirmos    osname
  910.                                     "\n"))
  911.  
  912.         (if (IN #instparts 0) (set msgconfirm2 (cat msgconfirm2 #msgconfirmdevsdest #destdevs)))
  913.         (if (IN #instparts 1) (set msgconfirm2 (cat msgconfirm2 #msgconfirmlibsdest #destlibs)))
  914.         (if (IN #instparts 2) (set msgconfirm2 (cat msgconfirm2 #msgconfirmdocsdest (tackon #destdocs #destdocsdir))))
  915.         (if (IN #instparts 3) (set msgconfirm2 (cat msgconfirm2 #msgconfirmutildest (tackon #destutil #destutildir))))
  916.     )
  917.     (
  918.  
  919.         (set msgconfirm1            #msgconfirmdeinst)
  920.  
  921.         (set msgconfirm2    (cat    #msgconfirmdevsdest    #destdevs
  922.                                     #msgconfirmlibsdest    #destlibs
  923.                                     #msgconfirmdocsdest    (tackon #destdocs #destdocsdir)
  924.                                     #msgconfirmutildest    (tackon #destutil #destutildir)))
  925.  
  926.     ))
  927.  
  928.  
  929.     (if (= 2 #instchoice)
  930.         (set msgconfirm3    (cat    #msgconfirmbackdest (tackon #destback #destbackdir)))
  931.     )
  932.  
  933.     (set msgconfirm            (cat    msgconfirm1 msgconfirm2 msgconfirm3 #msgconfirmask))
  934.  
  935.     ;*** All right?
  936.     (set    choice
  937.         (askbool
  938.             (prompt        msgconfirm)
  939.             (help        msgconfirm)
  940.             (default    1)
  941.         )
  942.     )
  943.  
  944.     (set @default-dest (tackon #destdocs #destdocsdir))
  945.  
  946.     (set choice choice)
  947. )
  948.  
  949.  
  950.  
  951. ;***************************************************************************************************
  952. ;***    Procedure SetupInstall
  953. ;***************************************************************************************************
  954. (procedure P_SetupInstall
  955.  
  956.     (if (<> 3 #instchoice) (working #msgworkingprepareinst) (working #msgworkingpreparedeinst))
  957.  
  958.     (if (= 0 #instchoice) (
  959.         (P_PreUpdate)
  960.     ))
  961.  
  962.     (if (= 1 #instchoice) (
  963.         (P_PreDeInstall)
  964.         (P_PreNewInstall)
  965.     ))
  966.  
  967.     (if (= 2 #instchoice) (
  968.         (P_PreNewInstall)
  969.     ))
  970.  
  971.     (if (= 3 #instchoice) (
  972.         (P_PreDeInstall)
  973.     ))
  974. )
  975.  
  976.  
  977. ;***************************************************************************************************
  978. ;***    Procedure DoInstall
  979. ;***************************************************************************************************
  980. (procedure P_DoInstall
  981.  
  982.     (if (<> 3 #instchoice) (working #msgworkinginst) (working #msgworkingdeinst))
  983.  
  984.     (if (= 0 #instchoice) (
  985.         (P_DoUpdate)
  986.     ))
  987.  
  988.     (if (= 1 #instchoice) (
  989.         (P_DeInstall)
  990.         (P_NewInstall)
  991.     ))
  992.  
  993.     (if (= 2 #instchoice) (
  994.         (P_Backup)
  995.         (P_NewInstall)
  996.     ))
  997.  
  998.     (if (= 3 #instchoice) (
  999.         (P_DeInstall)
  1000.     ))
  1001. )
  1002.  
  1003.  
  1004.  
  1005. ;***************************************************************************************************
  1006. ;***    Procedure PreUpdate
  1007. ;***************************************************************************************************
  1008. (procedure P_PreUpdate
  1009.  
  1010.     ;*** Define the source/dest dirs
  1011.     ;***
  1012.     (set srcdir (pathonly @icon))
  1013.  
  1014.     (run (cat "\"" (tackon srcdir #lhexname) "\" " #lhexopts #tempdir " " #lhexcmd " \"" (tackon srcdir #instarc) "\""))
  1015. )
  1016.  
  1017.  
  1018. ;***************************************************************************************************
  1019. ;***    Procedure DoUpdate
  1020. ;***************************************************************************************************
  1021. (procedure P_DoUpdate
  1022.  
  1023.     ;*** Define the source dirs
  1024.     ;***
  1025.     (set srcdir (tackon #tempdir #tempinstdir))
  1026.     (set srcdirlibs (tackon srcdir "libs"))
  1027.     (set srcdirdocs (tackon srcdir "docs"))
  1028.     (set srcdirutil (tackon srcdir "goodies"))
  1029.  
  1030.  
  1031.     ;*** Now copy the files always needed
  1032.     ;***
  1033.  
  1034.     ;*** Copy the selected drivers.
  1035.     ;***
  1036.     (if (IN #instparts 0) (
  1037.  
  1038.         (set copycard 0)
  1039.         (set copiedcards 0)
  1040.         (set instcards #instcards)
  1041.  
  1042.         (if (AND (IN instcards 2) (IN instcards 5)) (set instcards (- instcards 32)))
  1043.         (if (AND (IN instcards 3) (IN instcards 4)) (set instcards (- instcards 16)))
  1044.  
  1045.         (while (< copycard 8) (
  1046.  
  1047.             (if (IN instcards copycard) (
  1048.  
  1049.                 (if (= copycard 0)                        (set cardpat #vmchc1))
  1050.                 (if (OR (= copycard 1) (= copycard 6))    (set cardpat #vmchc3))
  1051.                 (if (OR (= copycard 2) (= copycard 5))    (set cardpat #vmchc3z))
  1052.                 (if (OR (= copycard 3) (= copycard 4))    (set cardpat #vmchc4))
  1053.                 (if (= copycard 7)                        (set cardpat #vmchp))
  1054.  
  1055.                 ;*** Special CatWeazel dir.
  1056.                 ;***
  1057.                 (if (AND (IN instcards 6) (OR (= copycard 6) (= copycard 7)))
  1058.                     (set srcdirdevs (tackon srcdir "devs2"))
  1059.                     (set srcdirdevs (tackon srcdir "devs"))
  1060.                 )
  1061.  
  1062.                 (if (NOT (IN copiedcards copycard))    (
  1063.                     (set copiedcards (BITOR copiedcards (shiftleft 1 copycard)))
  1064.                     (P_CopyNewerExists srcdirdevs cardpat #destdevs)
  1065.                 ))
  1066.             ))
  1067.  
  1068.             (set copycard (+ 1 copycard))
  1069.         ))
  1070.     ))
  1071.  
  1072.  
  1073.     ;*** resource library
  1074.     ;***
  1075.     (if (IN #instparts 1) (P_CopyNewerExists srcdirlibs #vmcrsc #destlibs))
  1076.  
  1077.     ;*** documentation
  1078.     ;***
  1079.     (if (IN #instparts 2) (
  1080.         (P_MakeDir #destdocs #destdocsdir "icons")
  1081.         (P_CopyNewerExists srcdirdocs "~(#?.info)" (tackon #destdocs #destdocsdir))
  1082.     ))
  1083.  
  1084.     ;*** Goodies
  1085.     ;***
  1086.     (if (IN #instparts 3) (
  1087.  
  1088.         (P_MakeDir #destutil #destutildir "icons")
  1089.         (P_MakeDir (tackon #destutil #destutildir) "Goodies" "icons")
  1090.  
  1091.         (if (IN #instutil 0) (P_CopyNewerExists srcdirutil (cat #utilncomm "#?")    (tackon (tackon #destutil #destutildir) "Goodies")))
  1092.         (if (IN #instutil 1) (P_CopyNewerExists srcdirutil (cat #utilncommpk "#?")    (tackon (tackon #destutil #destutildir) "Goodies")))
  1093.         (if (IN #instutil 2) (P_CopyNewerExists srcdirutil (cat #utilhydra "#?")    (tackon (tackon #destutil #destutildir) "Goodies")))
  1094.         (if (IN #instutil 3) (P_CopyNewerExists srcdirutil (cat #utilporth "#?")    (tackon (tackon #destutil #destutildir) "Goodies")))
  1095.         (if (IN #instutil 4) (P_CopyNewerExists srcdirutil (cat #utilprtman "#?")    (tackon (tackon #destutil #destutildir) "Goodies")))
  1096.         (if (IN #instutil 5) (P_CopyNewerExists srcdirutil (cat #utilauxh "#?")        (tackon (tackon #destutil #destutildir) "Goodies")))
  1097.     ))
  1098.  
  1099.     ;*** Version ID file
  1100.     ;***
  1101.     (copyfiles
  1102.         (source (tackon (pathonly @icon) "hyperIOVersion"))
  1103.         (dest #destdevs)
  1104.         (nogauge)
  1105.         (files)
  1106.     )
  1107. )
  1108.  
  1109.  
  1110. ;***************************************************************************************************
  1111. ;***    Procedure PostUpdate
  1112. ;***************************************************************************************************
  1113. (procedure P_PostUpdate
  1114.  
  1115.     (delete (tackon #tempdir #tempinstdir) (all))
  1116.     (delete (cat (tackon #tempdir #tempinstdir) ".info"))
  1117. )
  1118.  
  1119.  
  1120. ;***************************************************************************************************
  1121. ;***    Procedure PreNewInstall
  1122. ;***************************************************************************************************
  1123. (procedure P_PreNewInstall
  1124.  
  1125.     ;*** Define the source/dest dirs
  1126.     ;***
  1127.     (set srcdir (pathonly @icon))
  1128.     (set destdir "ram:")
  1129.  
  1130.     (run (cat "\"" (tackon srcdir #lhexname) "\" " #lhexopts #tempdir " " #lhexcmd " \"" (tackon srcdir #instarc) "\""))
  1131. )
  1132.  
  1133.  
  1134. ;***************************************************************************************************
  1135. ;***    Procedure NewInstall
  1136. ;***************************************************************************************************
  1137. (procedure P_NewInstall
  1138.  
  1139.     ;*** Define the source dirs
  1140.     ;***
  1141.     (set srcdir (tackon #tempdir #tempinstdir))
  1142.     (set srcdirlibs (tackon srcdir "libs"))
  1143.     (set srcdirdocs (tackon srcdir "docs"))
  1144.     (set srcdirutil (tackon srcdir "goodies"))
  1145.  
  1146.     ;*** Now copy the files always needed
  1147.     ;***
  1148.  
  1149.     ;*** Copy the selected drivers.
  1150.     ;***
  1151.     (if (IN #instparts 0) (
  1152.  
  1153.         (set copycard 0)
  1154.         (set copiedcards 0)
  1155.         (set instcards #instcards)
  1156.  
  1157.         (while (< copycard 8) (
  1158.  
  1159.             (if (IN instcards copycard) (
  1160.  
  1161.                 (if (= copycard 0)                        (set cardpat #vmchc1))
  1162.                 (if (OR (= copycard 1) (= copycard 6))    (set cardpat #vmchc3))
  1163.                 (if (OR (= copycard 2) (= copycard 5))    (set cardpat #vmchc3z))
  1164.                 (if (OR (= copycard 3) (= copycard 4))    (set cardpat #vmchc4))
  1165.                 (if (= copycard 7)                        (set cardpat #vmchp))
  1166.  
  1167.                 ;*** Special CatWeazel dir.
  1168.                 ;***
  1169.                 (if (AND (IN instcards 6) (OR (= copycard 6) (= copycard 7)))
  1170.                     (set srcdirdevs (tackon srcdir "devs2"))
  1171.                     (set srcdirdevs (tackon srcdir "devs"))
  1172.                 )
  1173.  
  1174.                 (if (NOT (IN copiedcards copycard))    (
  1175.                     (set copiedcards (BITOR copiedcards (shiftleft 1 copycard)))
  1176.                     (P_CopyNewer srcdirdevs cardpat #destdevs)
  1177.                 ))
  1178.             ))
  1179.  
  1180.             (set copycard (+ 1 copycard))
  1181.         ))
  1182.     ))
  1183.  
  1184.  
  1185.     ;*** resource library
  1186.     ;***
  1187.     (if (IN #instparts 1) (P_CopyNewer srcdirlibs #vmcrsc #destlibs))
  1188.  
  1189.     ;*** documentation
  1190.     ;***
  1191.     (if (IN #instparts 2) (
  1192.         (P_MakeDir #destdocs #destdocsdir "icons")
  1193.         (P_CopyNewer srcdirdocs "~(#?.info)" (tackon #destdocs #destdocsdir))
  1194.     ))
  1195.  
  1196.     ;*** Goodies
  1197.     ;***
  1198.     (if (IN #instparts 3) (
  1199.  
  1200.         (P_MakeDir #destutil #destutildir "icons")
  1201.         (P_MakeDir (tackon #destutil #destutildir) "Goodies" "icons")
  1202.  
  1203.         (if (IN #instutil 0) (P_CopyNewer srcdirutil (cat #utilncomm "#?")        (tackon (tackon #destutil #destutildir) "Goodies")))
  1204.         (if (IN #instutil 1) (P_CopyNewer srcdirutil (cat #utilncommpk "#?")    (tackon (tackon #destutil #destutildir) "Goodies")))
  1205.         (if (IN #instutil 2) (P_CopyNewer srcdirutil (cat #utilhydra "#?")        (tackon (tackon #destutil #destutildir) "Goodies")))
  1206.         (if (IN #instutil 3) (P_CopyNewer srcdirutil (cat #utilporth "#?")        (tackon (tackon #destutil #destutildir) "Goodies")))
  1207.         (if (IN #instutil 4) (P_CopyNewer srcdirutil (cat #utilprtman "#?")        (tackon (tackon #destutil #destutildir) "Goodies")))
  1208.         (if (IN #instutil 5) (P_CopyNewer srcdirutil (cat #utilauxh "#?")        (tackon (tackon #destutil #destutildir) "Goodies")))
  1209.     ))
  1210.  
  1211.     ;*** Version ID file
  1212.     ;***
  1213.     (copyfiles
  1214.         (source (tackon (pathonly @icon) "hyperIOVersion"))
  1215.         (dest #destdevs)
  1216.         (nogauge)
  1217.         (files)
  1218.     )
  1219. )
  1220.  
  1221.  
  1222. ;***************************************************************************************************
  1223. ;***    Procedure PostNewInstall
  1224. ;***************************************************************************************************
  1225. (procedure P_PostNewInstall
  1226.  
  1227.     (delete (tackon #tempdir #tempinstdir) (all))
  1228.     (delete (cat (tackon #tempdir #tempinstdir) ".info"))
  1229. )
  1230.  
  1231.  
  1232. ;***************************************************************************************************
  1233. ;***    Procedure Backup
  1234. ;***************************************************************************************************
  1235. (procedure P_Backup
  1236.  
  1237.     (working #msgworkingbackup)
  1238.  
  1239.     ;*** Create all needed dirs
  1240.     ;***
  1241.     (P_MakeDir #destback "" "icons")
  1242.     (P_MakeDir #destback #destbackdir "icons")
  1243.  
  1244.  
  1245.     ;*** Backup version information file
  1246.     ;***
  1247.     (if (P_CheckExists (tackon #destdevs "hyperIOVersion")) (
  1248.  
  1249.         (copyfiles
  1250.             (source (tackon #destdevs "hyperIOVersion"))
  1251.             (dest (tackon #destback #destbackdir))
  1252.             (nogauge)
  1253.             (files)
  1254.         )
  1255.  
  1256.         (P_Delete (tackon #destdevs "hyperIOVersion") "noicons" "noreq")
  1257.     ))
  1258.  
  1259.  
  1260.     ;*** Backup Devs drawer
  1261.     ;***
  1262.     (foreach #destdevs #devspat (
  1263.  
  1264.         (copyfiles
  1265.             (source (tackon #destdevs @each-name))
  1266.             (dest (tackon (tackon #destback #destbackdir) "devs"))
  1267.             (nogauge)
  1268.             (files)
  1269.         )
  1270.  
  1271.         (P_Delete (tackon #destdevs @each-name) "icons" "req")
  1272.     ))
  1273.  
  1274.  
  1275.     ;*** Backup Libs drawer
  1276.     ;***
  1277.     (foreach #destlibs #libspat (
  1278.  
  1279.         (copylib
  1280.             (source (tackon #destlibs @each-name))
  1281.             (dest (tackon (tackon #destback #destbackdir) "libs"))
  1282.             (nogauge)
  1283.         )
  1284.  
  1285.         ;*** Don't delete any library if isdn installed!
  1286.         ;***
  1287.         (if (= 0 (P_CheckExistsPat #destdevs #devsisdnpat)) (P_Delete (tackon #destlibs @each-name) "icons" "req"))
  1288.     ))
  1289.  
  1290.     ;*** Backup documentation
  1291.     ;***
  1292.     (if (P_CheckExistsPat (tackon #destdocs #destdocsdir) "Documentation") (
  1293.  
  1294.         (copyfiles
  1295.             (source (tackon #destdocs #destdocsdir))
  1296.             (dest (tackon #destback #destbackdir))
  1297.             (pattern "Documentation")
  1298.             (nogauge)
  1299.             (infos)
  1300.         )
  1301.  
  1302.         (P_Delete (tackon (tackon #destdocs #destdocsdir) "Documentation") "icons" "req")
  1303.     ))
  1304.  
  1305.     (if (P_CheckExistsPat (tackon #destdocs #destdocsdir) "Dokumentation") (
  1306.  
  1307.         (copyfiles
  1308.             (source (tackon #destdocs #destdocsdir))
  1309.             (dest (tackon #destback #destbackdir))
  1310.             (pattern "Dokumentation")
  1311.             (nogauge)
  1312.             (infos)
  1313.         )
  1314.  
  1315.         (P_Delete (tackon (tackon #destdocs #destdocsdir) "Dokumentation") "icons" "req")
  1316.     ))
  1317.  
  1318.  
  1319.     ;*** Backup goodies
  1320.     ;***
  1321.     (if (P_CheckExistsPat (tackon #destutil #destutildir) "Goodies") (
  1322.  
  1323.         (copyfiles
  1324.             (source (tackon #destutil #destutildir))
  1325.             (dest (tackon #destback #destbackdir))
  1326.             (pattern "Goodies")
  1327.             (nogauge)
  1328.             (infos)
  1329.         )
  1330.  
  1331.         (P_Delete (tackon (tackon #destutil #destutildir) "Goodies") "icons" "req")
  1332.     ))
  1333.  
  1334. )
  1335.  
  1336.  
  1337. ;***************************************************************************************************
  1338. ;***    Procedure PreDeInstall
  1339. ;***************************************************************************************************
  1340. (procedure P_PreDeInstall
  1341.  
  1342.     ;*** Create a scriptfile header
  1343.     ;***
  1344.     (run (cat "echo >t:csinstdelete.temp \";csinstdelete.temp - Temporary file - Do not edit or delete*n\""))
  1345.  
  1346.     (set match 0)
  1347.  
  1348.     ;*** Check for files do delete
  1349.     ;***
  1350.     (if (P_CheckExistsPat #destdevs #devspat)                                                (set match (BITOR match 1)))
  1351.     (if (P_CheckExistsPat #destlibs (cat "~(" #vmcrsc "|~(" #libspat "))"))                    (set match (BITOR match 2)))
  1352.     (if (P_CheckExistsPat (tackon #destdocs #destdocsdir) "(Documentaion|Dokumentation)")    (set match (BITOR match 4)))
  1353.     (if (P_CheckExistsPat (tackon #destutil #destutildir) "Goodies")                        (set match (BITOR match 8)))
  1354.     (if (P_CheckExistsPat #destlibs #vmcrsc)                                                (set match (BITOR match 16)))
  1355.  
  1356.     ;*** Delete libs files if available AND no isdn installed (ask expert user)!
  1357.     ;***
  1358.     (if (= 3 #instchoice) (
  1359.  
  1360.         (set isdninst (P_CheckExistsPat #destdevs #devsisdnpat))
  1361.  
  1362.         (if (<> 0 isdninst) (
  1363.             (if (IN match 4) (
  1364.                 (if (> (getversion (tackon #destlibs #vmcrsc)) (getversion (tackon (tackon (pathonly @icon) "libs") #vmcrsc))) (
  1365.  
  1366.                     (set delrsclib 0)
  1367.  
  1368.                     (if (= 2 @user-level) (
  1369.  
  1370.                         (set    delrsclib
  1371.                             (askbool
  1372.                                 (prompt        #msgdelrsclib)
  1373.                                 (help        (cat #msgdelrsclib @askbool-help))
  1374.                                 (default    0)
  1375.                             )
  1376.                         )
  1377.                     ))
  1378.  
  1379.                     (if (= 1 delrsclib) (P_DeleteConfirmFiles #destlibs #vmcrsc 0))
  1380.                 ))
  1381.             ))
  1382.         ))
  1383.     ))
  1384.  
  1385.     ;*** Reset vmcresource flag
  1386.     ;***
  1387.     (set match (BITAND match 15))
  1388.  
  1389.     ;*** Found some?
  1390.     ;***
  1391.     (if (<> match 0 ) (
  1392.  
  1393.         (if (= 2 @user-level) (message #msgoldfilesexp) (message #msgoldfilesave))
  1394.  
  1395.         ;*** Delete devs files.
  1396.         ;***
  1397.         (if (IN match 0) (P_DeleteConfirmFiles #destdevs #devspat 0))
  1398.  
  1399.         ;*** Delete libs files.
  1400.         ;***
  1401.         (if (IN match 1) (P_DeleteConfirmFiles #destlibs #libspat 0))
  1402.  
  1403.         ;*** Delete dokumentation files.
  1404.         ;***
  1405.         (if (IN match 2) (P_DeleteConfirmFiles (tackon #destdocs #destdocsdir) "(Documentation|Dokumentation)" 1))
  1406.  
  1407.         ;*** Delete goodie files.
  1408.         ;***
  1409.         (if (IN match 3) (P_DeleteConfirmFiles (tackon #destutil #destutildir) "Goodies" 1))
  1410.  
  1411.         ;*** Delete docs/goodies directory.
  1412.         ;***
  1413.         (P_DeleteConfirmFiles #destdocs #destdocsdir 1)
  1414.  
  1415.         (if (OR (<> #destdocs #destutil) (<> #destdocsdir #destutildir)) (
  1416.             (P_DeleteConfirmFiles #destutil #destutildir 1)
  1417.  
  1418.         ))
  1419.     ))
  1420. )
  1421.  
  1422.  
  1423. ;***************************************************************************************************
  1424. ;***    Procedure DeleteConfirmFiles
  1425. ;***************************************************************************************************
  1426. (procedure P_DeleteConfirmFiles p_dir p_pat p_isdir
  1427.  
  1428.     ;*** Reset all used vars.
  1429.     ;***
  1430.     (set cnt 0)
  1431.     (set defopt 0)
  1432.  
  1433.     (if (P_CheckExistsPat p_dir p_pat) (
  1434.  
  1435.         (foreach p_dir p_pat (
  1436.  
  1437.             (symbolset (cat "f" cnt) (tackon p_dir @each-name))
  1438.  
  1439.             (set defopt (BITOR defopt (shiftleft 1 cnt)))
  1440.             (set cnt (+ 1 cnt))
  1441.  
  1442.             (if (= 14 cnt) (
  1443.                 (set usedopt (P_DeleteConfirmFiles2 defopt p_isdir f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13))
  1444.  
  1445.                 (set cnt 0)
  1446.                 (set defopt 0)
  1447.             ))
  1448.         ))
  1449.  
  1450.         (while (< cnt 14) (
  1451.             (symbolset (cat "f" cnt) "")
  1452.             (set cnt (+ 1 cnt))
  1453.         ))
  1454.  
  1455.         (set usedopt (P_DeleteConfirmFiles2 defopt p_isdir f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13))
  1456.     ))
  1457.  
  1458.     (set usedopt usedopt)
  1459. )
  1460.  
  1461.  
  1462. ;***************************************************************************************************
  1463. ;***    Procedure DeleteConfirmFiles2
  1464. ;***************************************************************************************************
  1465. (procedure P_DeleteConfirmFiles2 p_defopt p_isdir p_f0 p_f1 p_f2 p_f3 p_f4 p_f5 p_f6 p_f7 p_f8 p_f9 p_f10 p_f11 p_f12 p_f13
  1466.  
  1467.     (if (= 2 @user-level)
  1468.     (
  1469.         (set    choice (
  1470.             (askoptions (
  1471.                 (prompt        #msgoldfiles2)
  1472.                 (help        #msgoldfiles2 @askoptions-help)
  1473.                 (choices    p_f0 p_f1 p_f2 p_f3 p_f4 p_f5 p_f6 p_f7 p_f8 p_f9 p_f10 p_f11 p_f12 p_f13)
  1474.                 (default    p_defopt)
  1475.             ))
  1476.         ))
  1477.     )
  1478.     (set choice p_defopt))
  1479.  
  1480.     (set cnt 0)
  1481.  
  1482.     (while (< cnt 14) (
  1483.  
  1484.         (if (IN choice cnt) (
  1485.             (set delfile (select cnt p_f0 p_f1 p_f2 p_f3 p_f4 p_f5 p_f6 p_f7 p_f8 p_f9 p_f10 p_f11 p_f12 p_f13))
  1486.  
  1487.             ;*** Append a delete command for each file/dir.
  1488.             ;***
  1489.             (if (<> 0 p_isdir )
  1490.                 (run (cat "echo >>t:csinstdelete.temp \"delete " delfile " all\""))
  1491.                 (run (cat "echo >>t:csinstdelete.temp \"delete " delfile "\""))
  1492.             )
  1493.         ))
  1494.  
  1495.         (set cnt (+ 1 cnt))
  1496.     ))
  1497.  
  1498.     (set choice choice)
  1499. )
  1500.  
  1501.  
  1502. ;***************************************************************************************************
  1503. ;***    Procedure DeInstall
  1504. ;***************************************************************************************************
  1505. (procedure P_DeInstall
  1506.  
  1507.     ;*** Now REALLY delete the old files (script made by SetupInstall/PreDeInstall).
  1508.     ;***
  1509.     (if (<> 1 @pretend) (
  1510.         (execute "t:csinstdelete.temp")
  1511.     ))
  1512.  
  1513.     (P_Delete (tackon #destdevs "hyperIOVersion") "noicons" "noreq")
  1514. )
  1515.  
  1516.  
  1517. ;***************************************************************************************************
  1518. ;***    Procedure AfterInstall
  1519. ;***************************************************************************************************
  1520. (procedure P_AfterInstall
  1521.  
  1522.     (if (<> 3 #instchoice) (
  1523.  
  1524.         (if (<> 0 (P_CheckExists "sys:utilities/multiview"))
  1525.             (set mvpath "sys:utilities/multiview ")
  1526.  
  1527.             (if (<> 0 (P_CheckExists "sys:system/multiview"))
  1528.                 (set mvpath "sys:utilities/multiview ")
  1529.                 (set mvpath "multiview ")
  1530.             )
  1531.         )
  1532.  
  1533.         (if (= 1 (askbool
  1534.             (prompt #msgshowreadme)
  1535.             (default 1)
  1536.             (help (cat #msgshowreadme "\n\n" @askbool-help))))
  1537.  
  1538.             (if (= @language "deutsch")
  1539.                 (run (cat mvpath (tackon (tackon #tempdir #tempinstdir) "LiesMichZuerst.guide")))
  1540.                 (run (cat mvpath (tackon (tackon #tempdir #tempinstdir) "ReadMeFirst.guide")))
  1541.             )
  1542.         )
  1543.  
  1544.         (set tempuser @user-level)
  1545.         (user 2)
  1546.         (if (= 1 (askbool
  1547.             (prompt #msgreboot)
  1548.             (help (cat #msgreboot "\n\n" @askbool-help))
  1549.             (default 1)
  1550.             (choices #msgrebootyes #msgrebootno))) (
  1551.  
  1552.                 (run (tackon (tackon #tempdir #tempinstdir) "reboot"))
  1553.             )
  1554.         )
  1555.  
  1556.         (user tempuser)
  1557.         (working #msgworkingcleanup)
  1558.  
  1559.         (if (= 0 #instchoice) (
  1560.             (P_PostUpdate)
  1561.         ))
  1562.  
  1563.         (if (= 1 #instchoice) (
  1564.             (P_PostNewInstall)
  1565.         ))
  1566.  
  1567.         (if (= 2 #instchoice) (
  1568.             (P_PostNewInstall)
  1569.         ))
  1570.  
  1571.         (if (= 3 #instchoice) (
  1572.             (P_PostNewInstall)
  1573.         ))
  1574.     ))
  1575. )
  1576.  
  1577.  
  1578. ;***************************************************************************************************
  1579. ;***    Procedure Cleanup
  1580. ;***************************************************************************************************
  1581. (procedure P_Cleanup
  1582.  
  1583.     (if (= 0 #instchoice) (
  1584.         (P_PostUpdate)
  1585.     ))
  1586.  
  1587.     (if (= 1 #instchoice) (
  1588.         (P_PostNewInstall)
  1589.     ))
  1590.  
  1591.     (if (= 2 #instchoice) (
  1592.         (P_PostNewInstall)
  1593.     ))
  1594.  
  1595.     (if (= 3 #instchoice) (
  1596.         (P_PostNewInstall)
  1597.     ))
  1598.  
  1599.     (delete "t:csinstcheckpat#?.temp")
  1600.     (delete "t:csinstdelete.temp")
  1601. )
  1602.  
  1603.  
  1604. ;***************************************************************************************************
  1605. ;***    Entry point
  1606. ;***************************************************************************************************
  1607. ;*** No user should have a Installer version below 43.3!
  1608.  
  1609. (if (< @installer-version 2818051) (
  1610.     (message #wronginstaller)
  1611.     (exit (quiet))
  1612. ))
  1613.  
  1614. (complete 0)
  1615.  
  1616. (P_PreInstall)
  1617.  
  1618. (welcome)
  1619.  
  1620. (P_About)
  1621.  
  1622. (if (P_CheckOldInst) (
  1623.  
  1624.     (complete 5)
  1625.  
  1626.     (P_CheckOS)
  1627.     (P_CheckCPU)
  1628.  
  1629.     (P_PrepareInstall)
  1630.  
  1631.     (complete 10)
  1632.  
  1633.     ;*** Ask for confirmation
  1634.     (if (P_AskConfirmation) (
  1635.  
  1636.         (complete 20)
  1637.         (P_SetupInstall)
  1638.  
  1639.         (complete 40)
  1640.         (P_DoInstall)
  1641.  
  1642.         (complete 100)
  1643.         (P_AfterInstall)
  1644.     ))
  1645.  
  1646.     (P_Cleanup)
  1647.  
  1648.     (if (<> 3 #instchoice) (exit #msgendinst (quiet)) (exit #msgenddeinst (quiet)))
  1649. ))
  1650.  
  1651. (complete 100)
  1652. (P_Cleanup)
  1653. (exit #msgend2 (quiet))
  1654.  
  1655.  
  1656.